package com.tangcco.lockwell.repository;

import com.tangcco.lockwell.domain.Groups;
import com.tangcco.lockwell.viewmodel.admin.groups.GroupsMemberVM;
import com.tangcco.lockwell.viewmodel.admin.groups.GroupsPageFindVM;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 群组信息映射器接口
 * @author 李金昭
 * 用于映射数据库中的groups表
 *
 */
public interface GroupsMapper {
    //添加组
    int insertGroups(Groups groups);

    //删除组，同时群组用户关系表里面用户的一些信息清除
    int deleteGroups(int groupId);

    // 动态修改群组信息的方法，传入要修改的群组相关参数以及当前时间，用于更新操作
    int updateGroupsByIdSelective(Groups groups);

    //查询所有组的数量
    int selectCountGroups();

    int updateStatus(Integer groupId);
    int updateStatusOn(Integer groupId);
    Groups selectGroupById(Integer groupId);

    GroupsPageFindVM selectByGroupId(Integer groupId);

    // 动态查询方法，根据传入的多个参数进行灵活查询
    List<GroupsPageFindVM> findGroupsByConditionsSelective(GroupsPageFindVM groupsPageFindVM);

    //根据群组Id查找所有群组成员
    List<GroupsMemberVM> findGroupsMemberByGroupId(GroupsMemberVM groupsMemberVM);

    List<GroupsPageFindVM> findGroupsByUserId(@Param("userId") Integer userId);
}
